﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RTracker.Models.Common;
using RTracker.Areas.Recruitment.Models.VacancyExpirence;
using RTracker.Areas.Recruitment.Models.CandidateSource;
using RTracker.Areas.Recruitment.Models.Department;


namespace RTracker.Areas.Recruitment.Models.Candidate
{
    public class GCandidate
    {
        // members declaration
        private List<CCandidate> _lstCandidate;
        private List<CVacancyExpirence> _lstVacancyExpirence;
        private List<CCandidateSource> _lstCandidateSource;
        private List<CDepartment> _lstDepartment;
        private CCandidate _oCCandidate;                              // to store object of CCandidate
        private CStatus _oCStatus;                          // to store object of CStatus
        private CPaging _oCPaging;
        private int m_nId;                                // to store  id in case of save to return it to view. Based upon that we will refresh grid.

        // Default Constructor
        public GCandidate()
        {
            _lstCandidate = null;
            _lstVacancyExpirence = null;
            _lstCandidateSource = null;
            _lstDepartment = null;
            _oCCandidate = null;
            _oCStatus = null;
            _oCPaging = null;
        }

        // parameterized constructor
        public GCandidate(List<CCandidate> lstCandidate, List<CVacancyExpirence> lstVacancyExpirence, List<CCandidateSource> lstCandidateSource, List<CDepartment> lstDepartment, CCandidate oCCandidate, CStatus oCStatus, CPaging oCPaging)
        {
            _lstCandidate = lstCandidate;
            _oCCandidate = oCCandidate;
            _lstCandidateSource = lstCandidateSource;
            _lstDepartment = lstDepartment;
            _oCStatus = oCStatus;
            _oCPaging = oCPaging;
        }

        #region  "Properties"


        public List<CCandidate> LstCandidate
        {
            get { return _lstCandidate; }
            set { _lstCandidate = value; }
        }

        public List<CVacancyExpirence> LstVacancyExpirence
        {
            get { return _lstVacancyExpirence; }
            set { _lstVacancyExpirence = value; }
        }

        public List<CCandidateSource> LstCandidateSource
        {
            get { return _lstCandidateSource; }
            set { _lstCandidateSource = value; }
        }

        public List<CDepartment> LstDepartment
        {
            get { return _lstDepartment; }
            set { _lstDepartment = value; }
        }

        /// <summary>
        /// Used to store object of CCandidate
        /// </summary>
        public CCandidate Candidate
        {
            get { return _oCCandidate; }
            set { _oCCandidate = value; }
        }


        /// <summary>
        /// Used to store object of CStatus
        /// </summary>
        public CStatus Status
        {
            get { return _oCStatus; }
            set { _oCStatus = value; }
        }

        /// <summary>
        /// Used to store object of CPaging
        /// </summary>
        public CPaging Paging
        {
            get { return _oCPaging; }
            set { _oCPaging = value; }
        }


        /// <summary>
        /// Used to store organization id
        /// </summary>
        public int Id
        {
            get { return m_nId; }
            set { m_nId = value; }
        }

        #endregion
    }
}